﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 修改人：x
 * 时间：
 * 修改说明：
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace seejee_Backendium.Data.Services
{
    public class PasswordService
    {
        // 生成安全的随机盐值 
        public static string GenerateSalt(int size = 32)
        {
            using var rng = RandomNumberGenerator.Create();
            var saltBytes = new byte[size];
            rng.GetBytes(saltBytes);
            return Convert.ToBase64String(saltBytes);
        }

        // 二次哈希处理 
        public static string HashPassword(string frontendHash, string salt)
        {
            using var sha256 = SHA256.Create();

            // 组合前端哈希和盐值
            var saltedPassword = $"{frontendHash}{salt}";
            var bytes = Encoding.UTF8.GetBytes(saltedPassword); 

            // 二次哈希
            var hashBytes = sha256.ComputeHash(bytes);

            // 转换为十六进制字符串
            var builder = new StringBuilder();
            foreach (var b in hashBytes) builder.Append(b.ToString("x2"));

            return builder.ToString();
        }
    }

}
